//
//  CAValueFunction.swift
//  Documentation
//
//  Created by Toj on 8/9/23.
//

/**
 * 它定义了动画属性值的计算方式. 用于管理计算动画值的函数
 */

public struct CAValueFunctionName : Hashable, Equatable, RawRepresentable, @unchecked Sendable {

    public init(rawValue: String)
}

@available(iOS 3.0, *)
open class CAValueFunction : NSObject, NSSecureCoding {

    
    public convenience init?(name: CAValueFunctionName)

    
    open var name: CAValueFunctionName { get }
}
extension CAValueFunctionName {

    
    /** Value function names. **/
    @available(iOS 3.0, *)
    /// 绕X轴旋转计算函数
    public static let rotateX: CAValueFunctionName

    
    @available(iOS 3.0, *)
    /// 绕Y轴旋转计算函数
    public static let rotateY: CAValueFunctionName

    
    @available(iOS 3.0, *)
    /// 绕Z轴旋转计算函数
    public static let rotateZ: CAValueFunctionName

    
    /* The `scale' function takes three input values and constructs a
     * 4x4 matrix representing the corresponding scale matrix. */
    
    @available(iOS 3.0, *)
    /// 缩放计算函数
    public static let scale: CAValueFunctionName

    
    /* The `scaleX', `scaleY', `scaleZ' functions take a single input value
     * and construct a 4x4 matrix representing the corresponding scaling
     * matrix. */
    
    @available(iOS 3.0, *)
    public static let scaleX: CAValueFunctionName

    
    @available(iOS 3.0, *)
    public static let scaleY: CAValueFunctionName

    
    @available(iOS 3.0, *)
    public static let scaleZ: CAValueFunctionName

    
    /* The `translate' function takes three input values and constructs a
     * 4x4 matrix representing the corresponding scale matrix. */
    
    @available(iOS 3.0, *)
    /// 平移计算函数
    public static let translate: CAValueFunctionName

    
    /* The `translateX', `translateY', `translateZ' functions take a single
     * input value and construct a 4x4 matrix representing the corresponding
     * translation matrix. */
    
    @available(iOS 3.0, *)
    public static let translateX: CAValueFunctionName

    
    @available(iOS 3.0, *)
    public static let translateY: CAValueFunctionName

    
    @available(iOS 3.0, *)
    public static let translateZ: CAValueFunctionName
}
